import request from '@/utils/axios'
// 文件上传客户端相关配置
export interface ResourceClientConfigType {
  basePath: string
  host?: string
  port?: number
  username?: string
  password?: string
  mode?: string
  endpoint?: string
  bucket?: string
  accessKey?: string
  accessSecret?: string
  domain: string
}

// 文件存储器配置
export interface ResourceConfigType {
  id: number
  name: string
  storage?: number
  master: boolean
  config: ResourceClientConfigType
  imageExts: string // 图片上传接受的图片类型
  videoExts: string // 媒体上传接受的媒体类型
  audioExts: string // 其它文件上传接受的文件类型
  textExts: string // 其它文件上传接受的文件类型
  applicationExts: string // 其它文件上传接受的文件类型
  imageSize: number // 图片上传大小限制 （默认后端存储以字节为单位，前端自行转化为KB或MB）
  videoSize: number // 媒体上传大小限制 （默认后端存储以字节为单位，前端自行转化为KB或MB）
  audioSize: number // 文件上传大小限制 （默认后端存储以字节为单位，前端自行转化为KB或MB）
  textSize: number // 文件上传大小限制 （默认后端存储以字节为单位，前端自行转化为KB或MB）
  applicationSize: number // 文件上传大小限制 （默认后端存储以字节为单位，前端自行转化为KB或MB）
  remark: string
  create_time?: Date
}

export interface ResourceConfigPageReqType extends PageParam {
  name?: string
  storage?: number
  create_time?: Date[]
}

// 上传配置
export const ResourceConfigApi = {
  // 创建资源配置
  create: (data: ResourceConfigType) => {
    return request.post({ url: '/infra/resource-config/create', data, is_mock: true })
  },
  // 更新资源配置
  update: (data: ResourceConfigType) => {
    return request.put({ url: '/infra/resource-config/update', data, is_mock: true })
  },
  // 更新资源配置主配置属性
  updateMaster: (id: number) => {
    return request.put({ url: '/infra/resource-config/update-master?id=' + id, is_mock: true })
  },
  // 删除资源配置
  delete: (id: number) => {
    return request.delete({ url: '/infra/resource-config/delete?id=' + id, is_mock: true })
  },
  // 获取资源配置详情
  detail: (id: number) => {
    return request.get({ url: '/infra/resource-config/detail?id=' + id, is_mock: true })
  },
  // 获取主配置的资源配置详情
  master: () => {
    return request.get({ url: '/infra/resource-config/get-master-config', is_mock: true })
  },
  // 查询资源配置分页列表
  page: (params: ResourceConfigPageReqType) => {
    return request.get({ url: '/infra/resource-config/page', params, is_mock: true })
  },
  // 导出
  export: (params: ResourceConfigPageReqType) => {
    return request.get({ url: '/infra/resource-config/export', params, is_mock: true })
  },
  // 测试资源配置是否正常连接
  test: (id: number) => {
    return request.get({ url: '/infra/resource-config/test?id=' + id, is_mock: true })
  }
}
